package mobile.game.core.gen.entity;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Entity {
	/**
	 * 生成的实体名称
	 */
	String entityName();
	
	/**
	 * 生成的数据库表名称
	 */
	String tableName() default "";
	
	/**
	 * 设置需要继承Entity父类
	 */
	Class<?> superEntity() default Object.class;
	
	/**
	 * 是否为Entity父类
	 */
	boolean isSuper() default false;
	
	/**
	 * 生成的实体继承的父类
	 * - 当与superEntity同时设置时
	 *   创建库时子类会继承superEntity的字段
	 *   但生成的实体的父类会继承superClass
	 *   所以这种情况下, superClass类一般会继承superEntity生成的实体类
	 */
	Class<?> superClass() default Object.class;
	
	/**
	 * 是否跨服可用
	 */
	boolean isCross() default true;
	
	/**
	 * 是否不创建数据库表
	 */
	boolean noTable() default false;
	
	/**
	 * Entity定义中哪一个字段值表示拥有玩家id(相当于是human表的从表)，只对human相关的表有效
	 * 玩家的数据除了基本数据存入human表外，其他数据都是按模块拆分成子表
	 * 这里说的human的从表就是指这些子表
	 */
	String humanKey() default "";
}
